include_defs(
    '//bucklets/grpc.bucklet'
)

PROTOBUF_VER = '3.0.2'
GRPC_VER = '1.3.0'

PI_COMMIT = '8051d54c9c3415ca800db232a226189fd17ad60a'
PI_BASEURL = 'https://github.com/p4lang/PI.git'

# Wondering which .proto files to build? Check p4runtime's Makefile:
# https://github.com/p4lang/PI/blob/master/proto/Makefile.am
PROTO_SRCS = [
    '/proto/p4/p4runtime.proto',
    '/proto/p4/config/p4info.proto',
    '/proto/google/rpc/status.proto',
    '/proto/google/rpc/code.proto',
    '/proto/p4/tmp/p4config.proto',
]

COMPILE_DEPS =[
    '//lib:CORE_DEPS',
    '//incubator/grpc-dependencies:grpc-core-repkg-' + GRPC_VER,
    '//lib:grpc-stub-' + GRPC_VER,
    '//lib:grpc-protobuf-' + GRPC_VER,
    '//lib:protobuf-java-' + PROTOBUF_VER,
]

genrule(
    name = 'p4lang-pi-repo-' + PI_COMMIT,
    bash = 'git clone --quiet ' + PI_BASEURL + ' $OUT > /dev/null && '
            + 'cd $OUT && '
            + 'git checkout --quiet -b buck-build ' + PI_COMMIT + ' > /dev/null && '
            + 'git submodule update --quiet --init --recursive > /dev/null',
    out = 'repo',
)

def get_proto_src_string():
    proto_srcs = map(lambda x: "$(location :p4lang-pi-repo-%s)%s"  % (PI_COMMIT, x), PROTO_SRCS)
    return " ".join(proto_srcs)

grpc_jar(
    src_string = get_proto_src_string(),
    proto_paths = [
        '$(location :p4lang-pi-repo-' + PI_COMMIT + ')/proto',
    ],
    protoc_version = PROTOBUF_VER,
    plugin_version = GRPC_VER,
    deps = COMPILE_DEPS,
    include_std_lib = True,
)

project_config(
    src_target = ':onos-protocols-p4runtime-proto'
)